【超重要】対応しないと使えなくなるかも?!今、全S3ユーザがチェックすべき署名バージョン2の廃止について
ご機嫌いかがでしょうか、豊崎です。
注意喚起記事です。一部のS3利用者に影響が出ることなので、是非ご確認、および対象の方はご対応いただければと思います。
具体的に何のことかというと、Amazon S3のAWS署名バーション2の廃止についてです。
弊社suzukiがすでに記事を書いていますが、Amazon S3のAWS署名バーション2が2019年6月24日に廃止されます。これは、より安全にAWSおよびS3を利用できるようにするために署名バージョンの変更が行われるためです。
これによって一部のAWSユーザのS3の利用に影響が出ます。
AWSの各サービスのAPIを利用する際、AWSが送信元を特定できるようにリクエストに署名が必要です。現在AWSのAPIで利用されている署名バーションは「2」と「4」の2種類あり、「4」が推奨されています。
しかし、古いAWS CLIやAWS SDKのバージョンのものではリクエスト時の署名がバージョン2で行われているケースがあります。
そしてこれまでバージョン2、4どちらでも利用できていたS3のAPIリクエストの署名バージョン2が2019年6月24日に廃止されます。
つまりどういうことか?
古いAWS CLIやSDKを使ってる人は、何も対応しないで放っておくとS3バケット・オブジェクトにアクセスできなくなります!!
まじか、、、これはしっかりと対応しなければ。。
慌てても仕方ないので、誰が対象で、何をどのようにすればいいかをまとめていきたいと思います。
どのようなユーザが対象?
対象者の切り分けを以下のステップで行いましょう
- まずは以下の表でご自身が利用しているSDKを確認ください。
- 次に利用中のSDKのアップグレード要否を確認しましょう。
- 最後にアプリケーションコードの修正要否を確認しましょう。
ご自身の環境で何を対応すれば良いか確認できましたでしょうか。必要に応じてSDKのアップグレード、およびアプリケーションコードの修正を行いましょう。
ただし、以下の表はあくまで「必要最低限のバーション」が記載されています。可能であれば最新のSDKを導入することが望ましいです。ただし、現在稼働中のアプリケーションの改修が発生する可能性があるため、状況に応じて判断を行いましょう。
参考:https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-move-to-Sig4
利用中のSDK | SDKのアップグレード要否 | アプリケーションコードの修正要否 |
---|---|---|
AWS SDK for Java v1 | Java 1.11.x あるいは v2 in Q4 2018 にアップグレード。 | はい |
AWS SDK for Java v2 (プレビュー) | SDK のアップグレードは不要です。 | いいえ |
AWS SDK for .NET v1 | 3.1.10 以降にアップグレード。 | はい |
AWS SDK for .NET v2 | 3.1.10 以降にアップグレード。 | いいえ |
AWS SDK for .NET v3 | SDK のアップグレードは不要です。 | はい |
AWS SDK for JavaScript v1 | 2.68.0 以降にアップグレード。 | はい |
AWS SDK for JavaScript v2 | 2.68.0 以降にアップグレード。 | はい |
AWS SDK for JavaScript v3 | 現在のところ、何もする必要はありません。主要バージョン V3 in Q3 2019 にアップグレード。 | いいえ |
AWS SDK for PHP v1 | 主要バージョン V3 にアップグレード。 | はい |
AWS SDK for PHP v2 | 主要バージョン V3 にアップグレード。 | はい |
AWS SDK for PHP v3 | SDK のアップグレードは不要です。 | いいえ |
Boto2 | Boto2 v2.49.0 にアップグレード。 | はい |
Boto3 | 1.5.71 (Botocore)、1.4.6 (Boto3) にアップグレード。 | はい |
AWS CLI | 1.11.108 にアップグレード。 | はい |
AWS CLI v2 (プレビュー) | SDK のアップグレードは不要です。 | いいえ |
AWS SDK for Ruby v1 | Ruby V3 にアップグレード。 | はい |
AWS SDK for Ruby v2 | Ruby V3 にアップグレード。 | はい |
AWS SDK for Ruby v3 | SDK のアップグレードは不要です。 | いいえ |
Go | SDK のアップグレードは不要です。 | いいえ |
C++ | SDK のアップグレードは不要です。 | いいえ |
また、S3を利用する製品やオープンソースで署名バージョン2が利用されている可能性もあると思われます。心当たりのあるかたは確認を行うことをお勧めいたします。
S3のログから判断する方法
S3 バケットのデータイベントログで署名バージョンを確認することができるようになっています(※1)。
CloudTrailのログからも署名バージョン2を利用しているかどうかが確認できます。こちらの記事も併せて確認することが望ましいです。
S3バケットにオブジェクトレベルのデータイベントが出力されていればAthenaなどで確認することも可能です。何はともあれ、まずはログを出力する設定を行いましょう。
課金に関する注意点
CloudTrailの有効化とS3のログ保管においては課金が発生します。高頻度のS3利用があるケースではご注意いただきますようお願いいたします。ただし、S3が全く利用できなくなった場合の業務影響を考えると、多くのケースでは目をつぶれる金額におさまるものと思われます。
- CloudTrail:データイベント 0.10 USD/100,000 件のイベント
- S3:ログ 0.025USD/GB(最初の50TB)
さいごに
現在稼働中の環境でS3をご利用の方は是非一度ご確認いただければと思います。この記事が誰かのお役にたてば幸いです。
注釈
※1:2019/03/05のアップデートでS3のサーバアクセスログに「署名バーション(Signature Version)」を含む新しいフィールドが追加されています。執筆時点では英語ページのみの記載でした。
https://docs.aws.amazon.com/AmazonS3/latest/dev/WhatsNew.html
参考
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-sig2-deprecation
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-move-to-Sig4
https://docs.aws.amazon.com/ja_jp/general/latest/gr/signing_aws_api_requests.html
https://forums.aws.amazon.com/ann.jspa?annID=5816
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/user-guide/enable-cloudtrail-events.html